﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using Jurassic_Island;
using System.Web.Security;
using System.Data;

namespace JurassicIslandWeb
{
    public partial class Mapa : System.Web.UI.Page
    {
        private ENJugadores enJugador = new ENJugadores();
        private String urlMapa = "~/MapFiles/dynImgMapExplo.aspx";

        protected void Page_Load(object sender, EventArgs e)
        {
            Page.Title = Master.Page.Header.Title + " - Mapa";
            //Label lbprueba = (Label)lvMapa.FindControl("Prrueba");
            if (User.Identity.IsAuthenticated)
            {
                ENJugadores enJugAux = new ENJugadores();
                try
                {
                    
                    enJugAux = enJugAux.ObtenerJugador(User.Identity.Name); //Comprobamos que el jugador todavía existe
                }
                catch (Exception)
                {   //Llegaremos aquí si no existiera el jugador en la base de datos.
                    FormsAuthentication.SignOut(); //Se cierra la sesión para borrar la cookie.
                    Response.Redirect("~/Bienvenida.aspx"); //Se le redirige a la pagina de bienvenida
                }

                try
                {
                    ENPartidas enPart = new ENPartidas();
                    ENLugares enLug = new ENLugares();
                    DataSet dsPart = enPart.ObtenerListaPartidasPorJugador(enJugAux.Jugador);
                    DataSet dsLug = enLug.ObtenerListaLugares();

                    enPart = new ENPartidas(dsPart.Tables["Partidas"].Rows[0]);

                    //Label lDinero = (Label)lvMapa.FindControl("lDinero");
                    lDinero.Text = enPart.Dinero.ToString();
                    lVida.Text = enPart.Vida.ToString();

                    DataRow drLug = enLug.ObtenerListaLugares().Tables["Lugares"].Rows.Find(enPart.Lugar);

                    //Image imgMapa = (Image)lvMapa.FindControl("imgMapa");
                    lLugar.Text = drLug["Nombre"].ToString();
                    imgMapa.ImageUrl = generaUrlMapa(drLug["Coordenada X"].ToString(),
                                                     drLug["Coordenada Y"].ToString(),
                                                     imgMapa.Width.ToString(),
                                                     imgMapa.Height.ToString());


                    //Parte dinamica de destinos, esta parte se ejecutara la primera vez que cargue la pagina
                    //el resto tendra que ir en el WebMethod que es el que se lanzara por los links
                    string auxiliar = "";

                    if (enPart.Vida > 0)
                    {
                        auxiliar += "<b>¿Qué deseas hacer?</b><br />";
                        auxiliar += "<a id=\"hlTienda\" href=\"Tienda.aspx\">Comprar objetos en la tienda</a><br />";

                        ENCaminos destinos = new ENCaminos();
                        DataSet dsDestinos = new DataSet();
                        DataTable dtDestinos = new DataTable();

                        dsDestinos = destinos.ObtenerListaCaminosPorOrigen(enPart.Lugar.ToString());

                        dtDestinos = dsDestinos.Tables["Caminos"];
                        foreach (DataRow drDestinos in dtDestinos.Rows)
                        {
                            //auxiliar = auxiliar + "<a id='"+drDestinos["ID"]+"' href='Desplazamiento.aspx?destino="+Server.UrlEncode(drDestinos["Destino"].ToString()) +"' onclick=\"updateDateKey(this.id);\">"+"Ir a -> "+drDestinos["Destino"].ToString() + "</a><br/>";
                            //auxiliar = auxiliar + "<a id='Destino" + drDestinos["Destino"] + "' href='Desplazamiento.aspx?destino=" + Server.UrlEncode(drDestinos["Destino"].ToString()) + "' onclick=\"updateDateKey(this.id);\">" + "Ir a " + drDestinos["Destino"].ToString() + "</a><br/>";
                            auxiliar = auxiliar + "<a id=\"Destino" + drDestinos["Destino"] + "\" href=\"Desplazamiento.aspx?destino=" + Server.UrlEncode(drDestinos["Destino"].ToString()) + "\">" + "Ir a " + drDestinos["Destino"].ToString() + "</a><br/>";
                        }
                    }
                    else
                    {
                        auxiliar += "<img src=\"Images/skull.gif\" align=\"absmiddle\" style=\"height:20px;\" />";
                        auxiliar += "<b>Estás muerto. Acab&oacute; la partida,</b>";
                        auxiliar += "<img src=\"Images/skull.gif\" align=\"absmiddle\" style=\"height:20px;\" /><br />";
                        ImageVida.ImageUrl = "~/Images/skull.gif";
                    }

                    myDiv.InnerHtml = auxiliar;

                    MostrarMochila();
                }
                catch (Exception)
                {
                    Response.Redirect("~/Bienvenida.aspx");
                }
                
            }
            else
                Response.Redirect("~/Bienvenida.aspx"); //se le redirige a la pagina de bienvenida
        }

        private void MostrarMochila()
        {
            //Obtener datos de partida
            ENPartidas enPart = new ENPartidas();
            DataSet dsPart = enPart.ObtenerListaPartidasPorJugador(User.Identity.Name);
            enPart = new ENPartidas(dsPart.Tables["Partidas"].Rows[0]);

            //
            ENObjetoMochila enObjMochila = new ENObjetoMochila();
            DataTable dtMochila = enObjMochila.ObtenerListaObjetosMochilaPorPartida(enPart.ID).Tables["Objetos_Mochila"];


            if (dtMochila.Rows.Count > 0)
            {
                String htmlMochila = "<b>Contenido de tu mochila:</b><br /><ul>";
                foreach (DataRow dr in dtMochila.Rows)
                {
                    ENObjeto enObj = new ENObjeto();
                    enObj = enObj.ObtenerObjeto(dr["objeto_objmoch"].ToString());
                    String linea = "";
                    linea += "<li>" + enObj.Nombre + "</li>";

                    htmlMochila += linea;
                }
                divMochila.InnerHtml = htmlMochila + "</ul>";
            }
        }


        private String generaUrlMapa(String X, String Y, String Ancho, String Alto)
        {
            String url = urlMapa + "?x=" + X + "&y=" + Y + "&w=" + Ancho + "&h=" + Alto;
            return url;
        }

        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public static string GetHtml(string contextKey)
        {
            // A little pause to mimic a latent call
            // This the place to perfomr server side
            // code like DB access
            
            System.Threading.Thread.Sleep(350);

            return String.Format("{0}", contextKey);
            
        }
    }
}